<!-- KAPITEL 2 START :  IF-SATSER -->

<h2><a id="ch2">IF-satser</a></h2>

<h3><a id="ch2_1">Introduktion</a></h3>
<p>Nu kommer vi till något som gör våra program mycket mer användbara.  Med hjälp av en IF-sats kan vi få vårat program att utföra olika saker, att gå olika vägar, beroende på vad som händer i programmet.</p>
<p>"If" är engelska för det svenska ordet "om".  Ibland säger man "if/else-sats" och om man skriver det helt på svenska blir det "om/annars-sats".</p>
<p>Det handlar alltså om att vi vill att vårat program ska göra något OM NÅGOT, ANNARS ska det göra något annat.</p>

<!-- KAPITEL 2.1: EXEMPEL 1 -->

<h4><a id="ex2_1_1">Exempel: IF-sats "på svenska"</a></h4>
<pre>om(något är sant) {
    utför detta;
} annars {
    utför det här istället;
}</pre>
<p>Såhär ser en if-sats ut om man skulle använda svenska ord istället för engelska.</p>
<p>om(något är sant) {</p>
<p>Denna raden är början på våran if-sats.  Den kollar om något är sant.  Den skulle tex kunna jämföra två stycken variabler.  Om de båda variablerna är lika så ska något utföras.</p>
<p>} annars {</p>
<p>Om det som stod inom () tidigare <strong>inte</strong> stämde, då ska något annat utföras istället.</p>
<p>Något vi ska lägga märke till här är "{" och  "}".  Dessa fungerar som väggar.  Allt inom ett par "väggar" kommer att utföras.</p>
<p>Som var nämnt tidigare så vet inte datorn vad space och enter är för något.  Att man skriver på en ny rad osv beror bara på att det blir lättare att läsa.  Man skulle lika gärna kunna skriva den ovanstående koden på detta sättet istället:</p>

<!-- KAPITEL 2.1: EXEMPEL 2 -->

<h4><a id="ex2_1_2">Exempel: IF-sats skrivet på samma rad</a></h4>
<pre>om(något är sant) { utför detta; } annars { utför det här istället; }</pre>
<p>Det står exakt samma sak, men här har vi inte använt oss av enter och tab.  Vilket sätt man använder spelar ingen roll, men om det är mycket som ska utföras mellan våra "väggar" ("{" och "}"), så kan det vara bra att ha flera rader för att göra det lättare att läsa.</p>

<!-- KAPITEL 2.2: BOOLEAN -->

<h3><a id="ch2_2">Datatypen Boolean</a></h3>
<p>Nu ska vi prata om en ny datatyp.  Denna datatypen är lite speciell.  En boolean kan bara innehålla två olika värden:</p>
<p>True eller False.</p>
<p>På svenska blir det: Sant eller Falskt</p>
<p>Anledningen till varför vi behöver lära oss denna nya datatyp är för att den är viktig när vi arbetar med IF-satser.</p>
<p>En IF-sats kollar ju om något är sant eller inte, och är det då inte väldigt passande att ha kunskap om boolean?</p>
<p>Det som kan vara lite klurigt med booleans är att man inte alltid skriver ut "true" eller "false".  Ofta skriver man "2 > 1" eller "variabelNamn == 'innehåll'".</p>
<p>Om vi tittar lite närmare på det så ska det inte vara så svårt ändå.</p>
<p>2 > 1</p>
<p>Vad står det där?  2 är större än 1.  Är detta sant eller falskt?</p>
<p>Sålänge vi lever i den verklighet vi gör så borde 2 vara större än 1.  Alltså borde det som står där vara sant (eller true).</p>
<p>Om vi har en variabel av datatypen boolean, och vi ger den variabeln värdet "2 > 1" så kommer den variabeln innehålla "true".  Varför?  Jo, för en boolean kan bara innehålla "true" eller "false".  Och som vi precis sa så är ju 2 större än 1.  Det är "true", och det är det som sparas i variabeln.</p>
<p>Det finns mycket mer att lära sig om booleans.  Regler om vad som händer när man har mycket krångligare uttryck än "2 > 1" osv.  Men nu när vi vet vad en boolean är så kan vi fortsätta med IF-satser.</p>

<!-- KAPITEL 2.3: Operationer -->

<h3><a id="ch2_3">Operatorer</a></h3>
<p>Något som är viktigt att kunna är hur man jämför olika värden.  Det är lätt att säga "2 är större än 1", men hur skriver man det i Java?</p>
<p>Här kommer en lista på några "operatorer".  En operator är helt enkelt det man skriver för att jämföra två saker.</p>
<table>
    <thead>
        <th>Operator</th>
        <th>Betydelse</th>
    </thead>
    <tbody>
        <tr>
            <td>==</td>
            <td>Används vid jämförselse.  Lika med.  Samma som = i matematik.</td>
        </tr>
        <tr>
            <td>!=</td>
            <td>Motsatsen till ==.  Inte lika med.</td>
        </tr>
        <tr>
            <td>></td>
            <td>Större än.  Det som står före > är större än det som står efter >.</td>
        </tr>
        <tr>
            <td><</td>
            <td>Mindre än.  Det som står före < är mindre än det som står efter <.</td>
        </tr>
        <tr>
            <td>=></td>
            <td>Större än eller lika med.</td>
        </tr>
        <tr>
            <td><=</td>
            <td>Mindre än eller lika med.</td>
        </tr>
        <tr>
            <td>&&</td>
            <td>Och.  Dvs 1 && 2 betyder 1 och 2.</td>
        </tr>
        <tr>
            <td>||</td>
            <td>Eller.  Dvs 1 || 2 betyder 1 eller 2.</td>
        </tr>
    </tbody>
</table>

<!-- KAPITEL 2.4: IF-satser -->

<h3><a id="ch2_4">IF-satser</a></h3>
<p>Nu ska vi titta på hur man mer exakt skriver IF-satser i Java.</p>
<h4><a id="ex2_4_1">Exempel: IF-sats i Java</a></h4>
<pre>if(2 == 3) {
    System.out.println("2 är samma som 3!");
} else {
    System.out.println("2 är inte samma som 3!");
}</pre>
<img id="meme9" src="img/memeImpossibru.png" alt="Impossibru!">
<p>Aww shit, massa kod jag inte fattar!</p>
<p>Vi gör som alltid!  En rad i taget!</p>
<p>if(2 == 3) {</p>
<p>Okej, här kommer en IF-sats.  IF-satsen kollar om det som står innanför "(" och ")" är sant eller falskt.  Inom paranteserna står det 2 == 3.  Vad betydde ==?  Just det, lika med!  Är 2 lika med 3?  Nej, det är det inte!  Alltså är det som står i parantesen falskt!  Och sist kommer en "{".  Det är starten på vad som ska hända om IF-kollen var sann.</p>
<p>System.out.println("2 är samma som 3!");</p>
<p>Detta har vi inte skrivit något om tidigare, men allt denna raden gör är att den skriver "2 är samma som 3!" på skärmen.</p>
<p>} else {</p>
<p>Här har vi först vårat slut "}" på vad som skulle hänt om IF-kollan var sann.  Nu var den ju inte det, så allt som stod inom "{" och "}" hände aldrig!  Efter det står det else, och else på svenska blir "annars".  Detta är vad som händer om våran IF-koll inte är sann.  "Om detta är sant { gör detta } ANNARS { gör detta istället }".  Och precis som innan måste vi ha en "{" som visar att det är här det som ska hända börjar.</p>
<p>System.out.println("2 är inte samma som 3!");</p>
<p>Denna raden skriver ut "2 är inte samma som 3!" på skärmen.</p>
<p>}</p>
<p>Sist men inte minst så avslutar vi koden som ska köras då IF-kollan inte var sann, dvs då "annars" kördes.</p>
